#!/bin/bash
#==========备份格式===========
# mysql5719
# ├── bak
# │   └── 20200304_140305.sql
# └── mysql.sql
#============================
# mysql容器名称
MASTER_DOCKER_NAME=mysql5719_master
# 备份保存路径
MYSQL_BAK_PATH="/opt/module/mysql5719/master"
# 验证参数
FILE_COUNT=$#
if((FILE_COUNT!=2)); then
    echo ">>> 错误：未传递文件参数！"
    echo "  用法：mysql5719_bak_docker.sh password dbname"
    exit;
elif((FILE_COUNT==2));then
    MYSQL_ROOT_PASSWORD=$1
    MYSQL_DB_NAME=$2
    echo "库名：$MYSQL_DB_NAME 库，默认备份至：$MYSQL_BAK_PATH/$MYSQL_DB_NAME.sql"
fi

# 创建备份目录
if [ ! -d "$MYSQL_BAK_PATH/bak/" ]; then
    echo "$MYSQL_BAK_PATH/bak/ 不存在开始创建"
    mkdir -p $MYSQL_BAK_PATH/bak/
fi
# 备份调用
#java 调用脚本时，不要带 -it 交互终端
#docker exec -it mysql5719 mysqldump -uroot -p123456 --opt -R archives > $MYSQL_BAK_PATH/archives.sql
docker exec $MASTER_DOCKER_NAME mysqldump -uroot -p$MYSQL_ROOT_PASSWORD --opt -R $MYSQL_DB_NAME > $MYSQL_BAK_PATH/$MYSQL_DB_NAME.sql
cp $MYSQL_BAK_PATH/$MYSQL_DB_NAME.sql $MYSQL_BAK_PATH/bak/$MYSQL_DB_NAME_$(date "+%Y%m%d_%H%m%S").sql

echo ">>> 按时间区分备份："
# 如果安装了tree，打印备份目录
if [ `command -v tree` ]; then
    tree $MYSQL_BAK_PATH/bak
fi

#==========参考==========
#(1)所有数据库可以使用--all-databases
#导出单个数据库：结构 无数据
#[root@localhost ~]#mysqldump -h127.0.0.1 -uroot -p --opt --no-data db_name >~/db_name.sql
#导出单个数据库：有数据 无结构
#[root@localhost ~]#mysqldump -h127.0.0.1 -uroot -p --opt --no-create-info db_name >~/db_name.sql
#导出单个数据库：结构+数据
#[root@localhost ~]#mysqldump -h127.0.0.1 -uroot -p --opt db_name >~/db_name.sql
#导出单个数据库：结构+数据+函数+存储过程
#[root@localhost ~]#mysqldump -h127.0.0.1 -uroot -p --opt -R db_name >~/db_name.sql
#导出多个数据库：结构
#[root@localhost ~]#mysqldump -h127.0.0.1 -uroot -p --opt --databases db_name1 db_name2 >~/db_name.sql
#导出单个表：结构 无数据
#[root@localhost ~]#mysqldump -h127.0.0.1 -uroot -p --opt --no-data -d db_name table>~/table_name.sql
#导出单个表：结构 包含数据
#[root@localhost ~]#mysqldump -h127.0.0.1 -uroot -p --opt dbname  tablename>～/tablename.sql

#==================================
#mysql导入：
#[root@localhost ~]#mysql -u root -p 
#[root@localhost ~]#use  要导入的数据库
#[root@localhost ~]#source /home/1.sql
#或者
#[root@localhost ~]#mysql -u root -p< /home/1.sql
#注：
##--opt==--add-drop-table + --add-locks + --create-options + --disables-keys + --extended-insert + --lock-tables + --quick + --set+charset
##默认使用--opt，--skip-opt禁用--opt参数
#如果加上--opt参数则生成的dump文件中稍有不同：
#. 建表语句包含drop table if exists tableName
#. insert之前包含一个锁表语句lock tables tableName write，insert之后包含unlock tables

